from fastmcp import FastMCP
from datetime import date, datetime, timedelta
from Email import Email
from WordProcessor import WordProcessor

# 创建 MCP 服务器实例
mcp = FastMCP("My MCP Server")

@mcp.tool()
def get_today_info() -> dict:
    """
    获取今天的日期信息，包括今天日期（格式为 YYYY-MM-DD）和星期几。
    
    :return: 包含两个键值对的字典：
             - "date": 今天日期，格式为 YYYY-MM-DD（例如："2023-07-05"）
             - "weekday": 今天是周几（例如："周三"）
    """
    target_date = date.today()
    return {
        "date": target_date.strftime("%Y-%m-%d"),
        "weekday": ["周一","周二","周三","周四","周五","周六","周日"][target_date.weekday()]
    }

@mcp.tool()
def get_weather() -> list:
    """
    获取今天、明天、后天三天的天气信息，包括天气预报（例如："晴天"）、风力和温度（例如："25°C"）。
的。
    
    :return: 包含两个键值对的字典：
             - "date": 日期
             - "weather": 天气预报             
    """
    today=date.today().strftime("%Y-%m-%d")
    tomorrow = (date.today() + timedelta(days=1)).strftime("%Y-%m-%d")
    nexttomorrow = (date.today() + timedelta(days=2)).strftime("%Y-%m-%d")
    return [
        {"date": today,
        "weekday":"晴天，风力1级，温度32度"
        },
        {"date": tomorrow,
        "weekday":"大雨，风力6-8级，温度25度"
        },
        {"date": nexttomorrow,
        "weekday":"暴雨，风力9-12级，温度18度"
        }
    ]
@mcp.tool()
def sent_email(subject: str, recipients: str, cc_recipients: str, body: str, is_html: bool = True):
    """发送电子邮件
    
    参数说明:
        subject (str): 邮件主题，不能为空
        recipients (str): 收件人邮箱地址，多个邮箱用逗号分隔
        cc_recipients (str): 抄送人邮箱地址，多个邮箱用逗号分隔
        body (str): 邮件正文内容
        is_html (bool, optional): 邮件正文是否为HTML格式，默认为True
        
    异常处理:
        1. 会捕获Email类中可能抛出的所有异常
        2. 返回的错误信息会包含具体的异常原因
        
    使用示例:
        sent_email("测试邮件", "user1@example.com", "user2@example.com", "<h1>测试内容</h1>")
    """
    email = Email()
    email.send_email(subject, recipients, cc_recipients, body, is_html)

@mcp.tool()
def create_word_document(content) -> str:
    """
    根据内容生成Word文档并返回文件路径
    
    参数:
        content (str): 要写入Word文档的内容
        
    返回:
        str: 生成的Word文档的完整文件路径
        
    处理流程:
        1. 生成当前时间戳作为文件名
        2. 构建完整的文件路径
        3. 调用WordProcessor生成文档
    """
    
    # 生成文件名: 使用当前时间格式化(年月日时分秒)作为唯一标识
    file_name = datetime.now().strftime("%Y%m%d%H%M%S")
    
    # 构建完整文件路径: 使用原始字符串防止转义问题
    # 注意: 这里使用了硬编码路径，建议后续改为可配置路径
    file_path = r"C:/Users/cheng/Desktop/" + file_name + ".docx"

    # 调用WordProcessor生成Word文档
    WordProcessor().generate_word_document(file_path, content)
    
    # 返回生成的文件路径
    return file_path


# 启动服务器
if __name__ == "__main__":
    mcp.run(
        port=8000,
        transport="sse",
        host="127.0.0.1"
    )